package com.jm.offer.easy;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @Description https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
 * 08树 等学完树再说
 * @date 2022/4/5 8:21
 */
public class _09用两个栈实现队列 {
    public static void main(String[] args) {
        // 果然还是太菜。
    }
}
class CQueue{
    // 双段队列
    Deque<Integer> inStack;
    Deque<Integer> outStack;

    public CQueue() {
        inStack = new ArrayDeque<Integer>();
        outStack = new ArrayDeque<Integer>();
    }

    public void appendTail(int value) {
        inStack.push(value);
    }

    public int deleteHead() {
        // 如果出和入都为空，表示“队列”内没有元素，返回 -1
        if (outStack.isEmpty()) {
            if (inStack.isEmpty()) {
                return -1;
            }
            // 将入中的元素 弹出 放到出的
            in2out();
        }
        // 出弹出元素
        return outStack.pop();
    }

    private void in2out() {
        // 如果入不为空
        while (!inStack.isEmpty()) {
            // 将入的出栈 放到出中
            outStack.push(inStack.pop());
        }
    }
}
